package aerolinea

import dominio.Usuario
import excepciones.AsientoYaEstaReservado
import java.util.Date
import java.util.List
import org.junit.Assert
import org.junit.Before
import org.junit.Test
import servicios.AbstractHibernateTest
import servicios.AsientoManager
import servicios.TramoManager

class TramoTest extends AbstractHibernateTest {
	var Tramo t
	var Tramo t2
		
	@Before
	override void setUp() throws Exception{
		cargarTablas
		t= new TramoManager().consultarTramo("Argentina", "Brasil")
		t2= new TramoManager().consultarTramo("Cuba", "Argentina")
	}
	
	@Test
	def void testConsultarTramo() throws Exception {
		var tramo= new TramoManager().consultarTramo("Argentina", "Brasil")
		Assert.assertTrue(tramo.idTramo.origenID == "Argentina")
		Assert.assertTrue(tramo.idTramo.destinoID == "Brasil")
		Assert.assertEquals(tramo.asientos.size, 2)
	}
	
	@Test
	def void testAsientosDisponibles() throws Exception {
		var asientos= new TramoManager().asientosDisponibles("Argentina", "Brasil")
		Assert.assertTrue(asientos.length == 2)
	}
	
	@Test
	def void testReservarAsientos() throws Exception{
		var asientosAReservar= newArrayList
		asientosAReservar.add(new AsientoManager().consultarAsiento(1))
		var usuario= new Usuario("miNombre", "miApellido", "usario", "miPassword", "miEmail", null)
		new TramoManager().reservarAsientos(usuario, t, asientosAReservar)
	}
	
	
 	@Test
	def void testReservarAsientosYaReservadoException(){
		try{
			var asientos= newArrayList
			asientos.add(new AsientoManager().consultarAsiento(8))
			var usuario= new Usuario("miNombre", "miApellido", "unUsuario", "miPassword", "miEmail", null)
			new TramoManager().reservarAsientos(usuario, t2, asientos)
			var otroUsuario= new Usuario("miNombre", "miApellido", "usario", "miPassword", "miEmail", null)
			new TramoManager().reservarAsientos(otroUsuario, t2, asientos)
		}catch(AsientoYaEstaReservado e){}
	}
}